package com.stars.empoly.vmodel

import android.app.Application
import android.view.View
import androidx.databinding.Bindable
import androidx.lifecycle.MutableLiveData
import com.stars.empoly.BR
import com.stars.empoly.R
import com.stars.empoly.config.ConfigMMKV
import com.trailer.base.base.BRepository
import com.trailer.base.base.BViewModel
import com.trailer.base.utils.MMKVManager
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable
import io.reactivex.schedulers.Schedulers

import java.util.concurrent.TimeUnit

class ChangePhoneVModel(application: Application) : BViewModel<BRepository>(application) {

    var codeTip: MutableLiveData<String> = MutableLiveData(getCodeStr)
    private var disposable: Disposable? = null



    companion object {
        const val time = 60
        var timeStart: Long = 1
        const val getCodeStr = "获取验证码"

    }


    @Bindable
    open var phone: String? = null
        set(value) {
            field = value
            notifyPropertyChanged(BR.phone)
        }



    @Bindable
    var code: String? = null
        set(value) {
            field = value
            notifyPropertyChanged(BR.code)
        }




    fun getSmsCode(start: Long = 1) {
        if (codeTip.value != ForgetPasswordVModel.getCodeStr) {
            return
        }

        if (phone.isNullOrEmpty()) {
            toast(R.string.please_input_user_phone)
            return
        }

//        viewModelScope.launch {
//
//            val it = repository().lreq { NetEngine.service.getPassword(phone,"register",adminType) }
//            if (it.ok(true)) {
//                startTimer(start)
//            }
//
//        }

    }
    private fun startTimer(start: Long = 1) {
        disposeTimer()
        disposable = Observable.intervalRange(start, ForgetPasswordVModel.time - start + 1, 0, 1, TimeUnit.SECONDS)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .doOnNext {
                ForgetPasswordVModel.timeStart = it
                codeTip.value = if (ForgetPasswordVModel.time - it > 0) "${ForgetPasswordVModel.time - it}秒后重发" else {
                    ForgetPasswordVModel.getCodeStr
                }
            }
            .doOnComplete() {
                MMKVManager.instance().encode(ConfigMMKV.REGISTER_TIME_START, 60)
            }
            .doOnDispose() {
                MMKVManager.instance().encode(ConfigMMKV.REGISTER_TIME_START, 60)
            }
            .subscribe()
    }

    private fun disposeTimer() {
        disposable?.isDisposed ?: disposable?.dispose()
    }





    fun register(view: View) {

        if (phone.isNullOrEmpty()) {
            toast(R.string.please_input_user_phone)
            return
        }
        if (code.isNullOrEmpty()) {
            toast("请输入验证码")
            return
        }





    }












}



